import {
  bannerList,
  newsList
} from '../../api/news'
import {
  request,
  post
} from '../../utils/request'

// pages/news/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    list: [],
    // 轮播图数据
    bannerList: [],
    // 正在加载中
    loading:false,
    // 全部数据加载完成
    finish:false,
    pageNum:1,
    pageSize:10
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // // 进行数据初始化请求
    // wx.request({
    //   url: 'https://showme.myhope365.com/api/cms/article/open/list',
    //   // 请求方式
    //   method: "POST",
    //   // data,传递的参数的格式是不对的
    //   // post请求的请求提有哪些格式吗？
    //   //    1. content-type : application/json  => axios 默认也是json格式的
    //   //    2. 文件上传表单格式： content-type: multipart/form-data;  FormData()
    //   //    3. 表单格式： application/x-www-form-urlencodeed；  URLSearchParams 浏览器内置的对象

    //   // 指定请求头
    //   header: {
    //     "content-type": "application/x-www-form-urlencoded	"
    //   },
    //   data: {
    //     pageNum: 1,
    //     pageSize: 10
    //   },
    //   success: (res) => {
    //     // 获取到数据之后
    //     // console.log(res.data.rows);
    //     this.setData({
    //       list: res.data.rows
    //     })
    //   }
    // })

    // post("/api/cms/article/open/list")


    // wx.request({
    //   url: 'https://showme.myhope365.com/api/cms/article/open/banner/list',
    //   method:"POST",
    //   header:{
    //     "content-type":"application/x-www-form-urlencoded	"
    //   },
    //   data:{
    //     pageNum:1,
    //     pageSize:3
    //   },
    //   success:(res)=>{
    //     // debugger;
    //     // console.log(res);
    //     this.setData({
    //       bannerList:res.data.rows
    //     })
    //   }
    // })

    // request({
    //   url: 'https://showme.myhope365.com/api/cms/article/open/banner/list',
    //   method:"POST",
    //   data:{
    //     pageNum:1,
    //     pageSize:3
    //   },
    // }).then(res=>{
    //   this.setData({
    //     bannerList:res.data.rows
    //   })
    // })

    // post("/api/cms/article/open/banner/list", {
    //   pageNum: 1,
    //   pageSize: 3
    // }).then(res => {
    //   this.setData({
    //     bannerList: res.data.rows
    //   })
    // })

    // 1. 每次写的都需要写好多配置比较麻烦
    // 2. 如果接口之间有依赖关系，嵌套的层级比较多
    // 3. 每次写的时候需要加上域名，如果切换环境，所有接口都需要进行修改

    // 1. 封装的时候就可以在封装的函数体里设置好默认配置
    // 2. 通过Promise
    // 3. 自己配置一些映射关系

    this.initData();
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    // 每次下拉刷新的时候会执行，重新加载数据
    // 我们需要知道什么接口请求完成
    this.initData().then(res=>{
      wx.stopPullDownRefresh({
        success: (res) => {},
      })
    })
   
    // wx.stopPullDownRefresh({
    //   success: (res) => {},
    // })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    // 1. 控制加载状态（加载中还是未加载）
    // 2. 当数据全部加载完成之后有一个标示

    // 通过控制页码来加载更多的数据
    // 先判断能否进行加载
    let {loading,finish} = this.data;

    // 如果当前是正在加载中的状态，或者加载完成的状态就不在加载了
    if(loading && finish){
      return;
    }

    this.data.pageNum += 1;
    this.setData({
      loading:true
    })
    newsList(this.data.pageNum,this.data.pageSize).then(res=>{
      // 合并新数据和旧数据
      const list = this.data.list.concat(res.data.rows);
      // 判断数据是否全部加载完成
      finish  =  list.length >= res.data.total;
      this.setData({
        list,
        finish,
        loading:false
      })
    })
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  onShow(){
 // 如果当前界面不是tabbar界面的话是无法设置这个样式
 wx.setTabBarStyle({
  backgroundColor: '#ffffff',
  color:"#333333"
})
  },
  detail(e) {
    console.log(e)
    wx.navigateTo({
      // url: '/pages/news-detail/index?id='+e.currentTarget.dataset.id,
      url: `/pages/news-detail/index?id=${e.currentTarget.dataset.id}&name=李白`,
    })
  },
  initData(){
    this.data.pageNum = 1
    // 两个接口都是异步的，并且同时执行，我需要知道他们都执行完了之后，进行一些操作
    const newsPromise = newsList(1, this.data.pageSize).then(res => {
      this.setData({
        list: res.data.rows
      })
    })
    const bannerPromise = bannerList().then(res => {
      this.setData({
        bannerList: res.data.rows
      })
    })
    // promise.all
    return Promise.all([newsPromise,bannerPromise])
  }
})